home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / gaim / prefix.h < prev    next >
C/C++ Source or Header  |  2005-10-18  |  5KB  |  145 lines

  1. /*
  2.  * I made the following modifications, be sure to readd these when
  3.  * upgrading these files.
  4.  *
  5.  * Added this comment.
  6.  * Added "gaim_ ## " to the namespace
  7.  * Changed the lib macro to use /lib/gaim instead of just /lib
  8.  *  (why does gaim do that in the -DLIBDIR autoconf thing anyway?)
  9.  *
  10.  */
  11.  
  12. /*
  13.  * BinReloc - a library for creating relocatable executables
  14.  * Written by: Mike Hearn <mike@theoretic.com>
  15.  *             Hongli Lai <h.lai@chello.nl>
  16.  * http://autopackage.org/
  17.  *
  18.  * This source code is public domain. You can relicense this code
  19.  * under whatever license you want.
  20.  *
  21.  * See http://autopackage.org/docs/binreloc/ for
  22.  * more information and how to use this.
  23.  *
  24.  * NOTE: if you're using C++ and are getting "undefined reference
  25.  * to br_*", try renaming prefix.c to prefix.cpp
  26.  */
  27.  
  28. #ifndef _PREFIX_H_
  29. #define _PREFIX_H_
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif /* __cplusplus */
  34.  
  35. /* WARNING, BEFORE YOU MODIFY PREFIX.C:
  36.  *
  37.  * If you make changes to any of the functions in prefix.c, you MUST
  38.  * change the BR_NAMESPACE macro.
  39.  * This way you can avoid symbol table conflicts with other libraries
  40.  * that also happen to use BinReloc.
  41.  *
  42.  * Example:
  43.  * #define BR_NAMESPACE(funcName) foobar_ ## funcName
  44.  * --> expands br_locate to foobar_br_locate
  45.  */
  46. #undef BR_NAMESPACE
  47. #define BR_NAMESPACE(funcName) gaim_ ## funcName
  48.  
  49.  
  50. #ifdef ENABLE_BINRELOC
  51.  
  52. #define br_thread_local_store BR_NAMESPACE(br_thread_local_store)
  53. #define br_locate BR_NAMESPACE(br_locate)
  54. #define br_locate_prefix BR_NAMESPACE(br_locate_prefix)
  55. #define br_prepend_prefix BR_NAMESPACE(br_prepend_prefix)
  56.  
  57. #ifndef BR_NO_MACROS
  58.     /* These are convience macros that replace the ones usually used
  59.        in Autoconf/Automake projects */
  60.     #undef SELFPATH
  61.     #undef PREFIX
  62.     #undef PREFIXDIR
  63.     #undef BINDIR
  64.     #undef SBINDIR
  65.     #undef DATADIR
  66.     #undef LIBDIR
  67.     #undef LIBEXECDIR
  68.     #undef ETCDIR
  69.     #undef SYSCONFDIR
  70.     #undef CONFDIR
  71.     #undef LOCALEDIR
  72.  
  73.     #define SELFPATH    (br_thread_local_store (br_locate ((void *) "")))
  74.     #define PREFIX        (br_thread_local_store (br_locate_prefix ((void *) "")))
  75.     #define PREFIXDIR    (br_thread_local_store (br_locate_prefix ((void *) "")))
  76.     #define BINDIR        (br_thread_local_store (br_prepend_prefix ((void *) "", "/bin")))
  77.     #define SBINDIR        (br_thread_local_store (br_prepend_prefix ((void *) "", "/sbin")))
  78.     #define DATADIR        (br_thread_local_store (br_prepend_prefix ((void *) "", "/share")))
  79.     #define LIBDIR        (br_thread_local_store (br_prepend_prefix ((void *) "", "/lib/gaim")))
  80.     #define LIBEXECDIR    (br_thread_local_store (br_prepend_prefix ((void *) "", "/libexec")))
  81.     #define ETCDIR        (br_thread_local_store (br_prepend_prefix ((void *) "", "/etc")))
  82.     #define SYSCONFDIR    (br_thread_local_store (br_prepend_prefix ((void *) "", "/etc")))
  83.     #define CONFDIR        (br_thread_local_store (br_prepend_prefix ((void *) "", "/etc")))
  84.     #define LOCALEDIR    (br_thread_local_store (br_prepend_prefix ((void *) "", "/share/locale")))
  85. #endif /* BR_NO_MACROS */
  86.  
  87.  
  88. /* The following functions are used internally by BinReloc
  89.    and shouldn't be used directly in applications. */
  90.  
  91. char *br_locate        (void *symbol);
  92. char *br_locate_prefix    (void *symbol);
  93. char *br_prepend_prefix    (void *symbol, char *path);
  94.  
  95. #endif /* ENABLE_BINRELOC */
  96.  
  97. const char *br_thread_local_store (char *str);
  98.  
  99.  
  100. /* These macros and functions are not guarded by the ENABLE_BINRELOC
  101.  * macro because they are portable. You can use these functions.
  102.  */
  103.  
  104. #define br_strcat BR_NAMESPACE(br_strcat)
  105. #define br_extract_dir BR_NAMESPACE(br_extract_dir)
  106. #define br_extract_prefix BR_NAMESPACE(br_extract_prefix)
  107. #define br_set_locate_fallback_func BR_NAMESPACE(br_set_locate_fallback_func)
  108.  
  109. #ifndef BR_NO_MACROS
  110.     /* Convenience functions for concatenating paths */
  111.  
  112.     /* Each time you call one, the previous result will be freed. So don't do this:
  113.      *
  114.      *   some_function( BR_DATADIR("/one"), BR_DATADIR("/two") )
  115.      *
  116.      * as the first parameter will now be bogus!
  117.      */
  118.  
  119.     #define BR_SELFPATH(suffix)    (br_thread_local_store (br_strcat (SELFPATH, suffix)))
  120.     #define BR_PREFIX(suffix)    (br_thread_local_store (br_strcat (PREFIX, suffix)))
  121.     #define BR_PREFIXDIR(suffix)    (br_thread_local_store (br_strcat (BR_PREFIX, suffix)))
  122.     #define BR_BINDIR(suffix)    (br_thread_local_store (br_strcat (BINDIR, suffix)))
  123.     #define BR_SBINDIR(suffix)    (br_thread_local_store (br_strcat (SBINDIR, suffix)))
  124.     #define BR_DATADIR(suffix)    (br_thread_local_store (br_strcat (DATADIR, suffix)))
  125.     #define BR_LIBDIR(suffix)    (br_thread_local_store (br_strcat (LIBDIR, suffix)))
  126.     #define BR_LIBEXECDIR(suffix)    (br_thread_local_store (br_strcat (LIBEXECDIR, suffix)))
  127.     #define BR_ETCDIR(suffix)    (br_thread_local_store (br_strcat (ETCDIR, suffix)))
  128.     #define BR_SYSCONFDIR(suffix)    (br_thread_local_store (br_strcat (SYSCONFDIR, suffix)))
  129.     #define BR_CONFDIR(suffix)    (br_thread_local_store (br_strcat (CONFDIR, suffix)))
  130.     #define BR_LOCALEDIR(suffix)    (br_thread_local_store (br_strcat (LOCALEDIR, suffix)))
  131. #endif
  132.  
  133. char *br_strcat    (const char *str1, const char *str2);
  134. char *br_extract_dir    (const char *path);
  135. char *br_extract_prefix(const char *path);
  136. typedef char *(*br_locate_fallback_func) (void *symbol, void *data);
  137. void br_set_locate_fallback_func (br_locate_fallback_func func, void *data);
  138.  
  139.  
  140. #ifdef __cplusplus
  141. }
  142. #endif /* __cplusplus */
  143.  
  144. #endif /* _PREFIX_H_ */
  145.